package com.dys.testdate03;

import java.sql.Date;

/**
 * @className: com.dys.testdate03.DateSqlTest
 * @description: com.dys.testdate03
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/07/24 下午8:27
 */
public class DateSqlTest {

    /**
     * 这是一个main()方法,是应用程序的入口
     *
     * @param args 方法的形参列表,是一个字符串数组,包含了从命令行传递给程序的参数
     */
    public static void main(String[] args) {
        new DateSqlTest().testSqlDate();
    }

    /**
     * java.sql.date
     */
    public void testSqlDate() {
        // java.sql.Date
        Date sqlDate = new Date(new java.util.Date().getTime());
        System.out.println(sqlDate);

        /*
         * java.util.Date与java.sql.Date的区别:
         * (1)java.util.Date 有：年月日 时分秒
         * java.sql.Date 只有: 年月日
         * (2)java.sql.Date与java.util.Date的联系:
         * java.sql.Date(子类) extends java.util.Date(父类)
         * */

        // java.sql.Date与java.util.Date相互转换
        // (1) util-->sql
        java.util.Date utilDate = new Date(new java.util.Date().getTime());
        // 方式1: 向下转型: 父类实例转成子类实例
        Date sqlDate2 = (Date) utilDate;
        /*
          父类：Animal 子类：Dog
          Animal an = new Dog();
          Dog d = (Dog)an;
         */
        System.out.println(sqlDate2);
        // 方式2: 利用构造器
        Date sqlDate3 = new Date(utilDate.getTime());
        System.out.println(sqlDate3);

        // (2) 向上转型：sql --> util
        java.util.Date utilDate3 = sqlDate3;
        System.out.println(utilDate3.toLocaleString());

        // (3) String --> java.sql.Date
        Date sqlDate4 = Date.valueOf("2024-07-23");
        System.out.println(sqlDate4);
    }
}
